﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp10
{
    //    编写一个程序，以实现机器人的层次结构，此层次结构将至少包含抽象类机器人类Robot、炒菜机器人类CookRobot、传菜机器人类DeliveryRobot。
    //Robot类应包含机器人姓名name字段、机器人工作的方法Working()，该方法应该在子类中被实现，机器人工作的方式很多，所以Working()方法应该被定义为抽象方法。

    //可以在CookRobot中添加一个代表菜的类型的字段，用枚举类型；在DeliveryRobot中添加一个代表连续工作时长的字段hours。
    //CookRobot和DeliveryRobot应实现具体的Working()方法。

    //在主类中定义一个方法，形参数据类型是string，返回值数据类型是Robot，方法中实现如果传入的字符串是“炒菜”，
    //        那就返回CookRobot的实例（当然是要用Robot的引用指向的），如果传入的字符串是“传菜”，那就返回DeliveryRobot的实例。

    //Main方法中：用户输入所选择的机器人的功能，根据用户的输入Robot执行对应的功能。
    class Program
    {
        static void Main(string [] args) {
            string key;
            Console.WriteLine("请输入炒菜或者传菜");
            key = Console.ReadLine();
            Robot a = Tsat(key);
            a.Working();

        }
        public static Robot Tsat(string key)
        {
            Robot a;
            int s;
            switch (key)
            {
                case "炒菜" :
                    Console.WriteLine("请问你要炒什么菜系的菜:1.川菜     2.粤菜");
                    s = int.Parse(Console.ReadLine());
                    if (s == 1)
                    {
                        a = new CookRobot("炒菜机器人", cai.川菜);
                    }
                    else if (s == 2)
                    {
                        a = new CookRobot("炒菜机器人", cai.粤菜);
                    }
                    else
                    {
                        Console.WriteLine("选择出错，默认选择粤菜");
                        a = new CookRobot("炒菜机器人", cai.粤菜);
                    }
                    break;
                case "传菜":
                    Console.WriteLine("请输入传菜机器人的时长:");
                    int jiu = int.Parse(Console.ReadLine());
                    a = new DeliveryRobot("传菜机器人",jiu);
                    break;
                default:
                    Console.WriteLine("输入错误自动选择炒菜机器人");
                    a = new CookRobot("", cai.粤菜);
                    break;
            }
            return a;
        }
    }
}
